class Solution {
public:
    bool isValid(string s) {
        // 如果遇到[就入栈 每次和栈顶元素比较 如果是对应右括号就出栈
        // 不是就返回false
        stack<char> res;
        for (int i = 0; i < s.size(); ++i) {
            if (s[i] == '(' || s[i] == '{' || s[i] == '[')
                res.push(s[i]);
            else
            {
                if (res.empty())
                    return false;
                if ((s[i] == ']' && res.top() == '[') ||
                    (s[i] == ')' && res.top() == '(') ||
                    (s[i] == '}' && res.top() == '{')) {
                    res.pop();
                }else return false;
            }
        }
        return res.empty();
    }
};
